package com.boost.tjvm.gc;

/**
 * Survivor 中的对象相同年龄对象综合大于Survivor的一半，年龄大于或等于该年龄的对象直接进入老年代
 *
 * 长期存活的对象进入到老年代
 * MaxTenuringThreshold
 */
public class DynamicLongTimeObjectToOld {

    private static final int _1mb = 1024 * 1024;

    /**
     *
     * VM 参数 ： -verbose:gc -XX:+UseConcMarkSweepGC -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1
     *
     * 经过试验 -XX:+PrintTenuringDistribution 的参数有问题
     *
     * 此处没有试验出来 按照书上的方法
     * 
     */
    public static void testTenuringThreshold() {
        byte[] allocation1, allocation2, allocation3, allocation4;
        allocation1 = new byte[_1mb / 4];
        //allocation1 + allocation2  大于Survivor 空间一半
        allocation2 =  new byte[_1mb / 4];
        allocation3 = new byte[4 * _1mb];
        allocation4 = new byte[4 * _1mb];
        allocation4 = null;
        allocation4 = new byte[4 * _1mb];
    }

    public static void main(String[] args) {
        testTenuringThreshold();
    }


}
